import Vue from "vue";
import App from "./App.vue";

Vue.config.productionTip = false;

new Vue({
  render: (h) => h(App),  // 返回一个虚拟节点，里面的componentOptions，表示用这个组件的时候传入的配置，比如props,listeners
  beforeCreate() {
    console.log("vue实例 beforeCreate");
  },
  created() {
    console.log("vue实例 created");
  },
  beforeMount() {
    console.log("vue实例 beforeMount");
    console.log(this._vnode) // null
    console.log(this._render) // 有值

    /**
     * 
     * vue实例 beforeCreate
     * vue实例 created
     * vue实例 beforeMount
     * App组件 beforeCreate  是一个递归的过程
     * App组件 created
     * App组件 beforeMount  
     * App组件 创建它的虚拟dom树
     * A组件 beforeCreate  是一个递归的过程
     * A组件 created
     * A组件 beforeMount  
     * 
     * B组件 beforeCreate  是一个递归的过程
     * B组件 created
     * B组件 beforeMount  
     * B组件 mounted
     * A组件 mounted
     * App组件 mounted
     * vue实例 mounted
     */


  },
  mounted() {
    console.log("vue实例 mounted", this);  // this._vnode 是虚拟节点
  },
  beforeUpdate() {
    console.log("vue实例 beforeUpdate");
  },
  updated() {
    console.log("vue实例 updated");
  },
  beforeDestroy() {
    console.log("vue实例 beforeDestroy");
  },
  destroyed() {
    console.log("vue实例 destroyed");
  },
}).$mount("#app");
